package com.linln.modules.shopsService.service;

import com.linln.common.enums.StatusEnum;
import com.linln.common.vo.JsonResult;
import com.linln.common.vo.PageResult;
import com.linln.common.vo.ResultVo;
import com.linln.modules.shopsService.domain.Shops;
import com.linln.modules.system.domain.User;
import org.springframework.boot.configurationprocessor.json.JSONObject;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * @author zsc
 * @date 2020/11/19
 */
public interface ShopsService {

    /**
     * 获取分页列表数据
     *
     * @param example 查询实例
     * @return 返回分页数据
     */
    Page<Shops> getPageList(Example<Shops> example);

    /**
     * 根据ID查询数据
     *
     * @param id 主键ID
     */
    Shops getById(String id);

    /**
     * 保存数据
     *
     * @param shops 实体对象
     */
    Shops save(Shops shops, Long userId, MultipartFile file, Boolean flag) throws Exception;




    JsonResult addShopUser(String shopsId, Long userId);

    /**
     * 根据店铺评分排序 高的在前
     *
     * @param lon 经度
     * @param lat 纬度
     * @return 店铺列表
     */
//    Map<String, Object> getShopOrderScore(String lon, String lat, int pageNum, int limit,Integer areaId);

    /**
     * 根据店铺销量排序 高的在前
     *
     * @param lon 经度
     * @param lat 纬度
     * @return 店铺列表
     */
//    Map<String, Object> getShopOrderSales(String lon, String lat, int pageNum, int limit,Integer areaId);

    /**
     * 获取店铺所有用户
     *
     * @param page    页
     * @param limit   条
     * @param shopsId 店铺id
     * @return
     */
    PageResult<Map<String, String>> shopUserPage(Integer page, Integer limit, String shopsId);

    /**
     * 根据手机获取用户
     *
     * @param phone 手机号
     * @return
     */
    User getByPhone(String phone);

    /**
     * 删除店铺用户
     *
     * @param shopUserId 店铺用户id
     * @param userId     用户id
     * @return
     */
    void delShopUser(String shopUserId, Long userId);

    /**
     * 获取位置
     *
     * @param parentId
     * @param areaId
     * @return
     */
    List<Map<String, Object>> getAreaData(String parentId, String areaId);

    /**
     * 获取店长
     *
     * @param shopId 店铺id
     * @param roleId 角色id
     * @return
     */
    Map<String, Object> getManager(String shopId, Long roleId);

    /**
     * 删除店铺
     *
     * @param shopId
     * @return
     */
    void deleteShop(String shopId);

    /**
     * 获取店铺类型
     * @return
     */
    List<Map<String, Object>> getShopType();

    /**
     * 入驻店铺图片保存
     * @param base64
     * @param type
     * @return
     */
    JsonResult saveVerificationImgByBase64(String base64,int type);

    /**
     * 更具用户返回店铺 （返回集合）
     * @param id
     * @return
     */
    List<Map<String, Object>>  getByUserShops(Long id);

    /**
     * 根据用户返回店铺（返回单个）
     * @param id
     * @return
     */
    Map<String, Object>  getByUserShop(Long id);

    /**
     * 根据详细位置获取位置id(到市级)
     * @param address
     * @return
     */
    String getAddressbyAreaId(String address);

    String getShopTypeName(String[] ids);

    String shopNameById(String shopId);

    List<Shops> getByIds(List<String> ids);

    void saveShopDetails(Shops shops);
}
